#!/usr/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
# 
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are Copyright (C) 1998
# Netscape Communications Corporation. All Rights Reserved.
# 
# Contributor(s): TomWij <TomWij@live.com>

##############################################################################
#
# testBugModelInfluence.cgi
# -------------------------
# Test if new bugs have influence on the database.
#
##############################################################################

use Test::More tests => 3;

use LWP::UserAgent;
my $ua = new LWP::UserAgent;

### Set-up ###
# Empty the bugs, statistics and model of the Test Component of our Test Product. Then recreate a new model.
do '.\emptyDatabase.cgi';

### Tests ###

# Three bugs with "trivial" with the same title should result in a "trivial" suggestion.
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'trivial'});
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'trivial'});
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'trivial'});

$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'false', severity => 'trivial'});
$content = $response->content;

is ($content, 'trivial', 'Three bugs with "trivial" with the same title should result in a "trivial" suggestion.');

# Six more bugs with "blocker" with the same title should result in a "blocker" suggestion.
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'blocker'});
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'blocker'});
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'blocker'});
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'blocker'});
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'blocker'});
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'blocker'});

$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'false', severity => 'blocker'});
$content = $response->content;

is ($content, 'blocker', 'Six bugs with "blocker" with the same title should result in a "blocker" suggestion.');

# Six more bugs with "trivial" with the same title should result in a "trivial" suggestion.
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'trivial'});
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'trivial'});
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'trivial'});
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'trivial'});
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'trivial'});
$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'true', severity => 'trivial'});

$response = $ua->post('http://localhost/extensions/BugPrediction/lib/determineSeverity.cgi', { summary => 'BugPrediction1337', product => 'TestProduct', component => 'TestComponent', train => 'false', severity => 'trivial'});
$content = $response->content;

is ($content, 'trivial', 'Six bugs with "trivial" with the same title should result in a "trivial" suggestion.');